﻿Option Explicit On
Option Strict On

Imports System.Data.OleDb
Imports System.IO

'Documentación XML
''' <summary>
''' Este formulario contiene los menús de acceso y opciones del programa.
''' </summary>
''' <author> Jerón Fernández Caballero Rico</author>
''' <author> Daniel Morato Baudi</author>

Public Class FormEntrada

    Private Sub tsm_AnyadirEquipo_Click(sender As Object, e As EventArgs) Handles tsm_AnyadirEquipo.Click
        FormAnyadirEquipo.Show()
    End Sub

    Private Sub tsm_ModificarEquipo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_ConsultarEquipo.Click
        FormConsultas.Show()
    End Sub

    Private Sub tsm_AnyadirJugador_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_AnyadirJugador.Click
        FormAnyadirJugador.Show()
    End Sub

    Private Sub tsm_ModificarJugador_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_ConsultarJugador.Click
        FormConsultas.Show()
    End Sub

    Private Sub tsm_AnyadirTorneo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_AnyadirTorneo.Click
        FormAnyadirTorneo.Show()
    End Sub

    Private Sub tsm_ModificarTorneo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_ConsultarTorneo.Click
        FormConsultas.Show()
    End Sub

    Private Sub tsm_GestiónDeRoles_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_GestiónDeRoles.Click
        FormPermisos.Show()
    End Sub

    Private Sub tsm_AnyadirUsuario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_AnyadirUsuario.Click
        FormAnyadirUsuario.Show()
    End Sub

    Private Sub tsm_ConsultarUsuarios_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_ConsultarUsuarios.Click
        FormConsultas.Show()
    End Sub

    Private Sub tsp_btn_GestionUsuarios_Click(sender As Object, e As EventArgs) Handles tsp_btn_GestionUsuarios.Click
        FormConsultas.Show()
    End Sub

    Private Sub tsm_BorrarUsuarios_Click(sender As Object, e As EventArgs) Handles tsm_BorrarUsuarios.Click
        FormBorrarUsuario.Show()
    End Sub

    Private Sub tsm_RealizarCopiaSeguridad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_RealizarCopiaSeguridad.Click

        Dim Tablas() As String = {"Campeonato", "Jugador",
                                "Equipo", "JugadorEquipo",
                                "Permisos", "Rol", "Usuario"}

        sfd_GuardarCopiaSeguridad.ShowDialog()

        Try

            For i As Integer = 0 To Tablas.Length - 1 Step 1
                CrearCopiaSeguridad(Tablas(i))
            Next

            If File.Exists(sfd_GuardarCopiaSeguridad.FileName) Then

                MsgBox("La copia de seguridad se ha realizado correctamente.")
                tsp_lb_Mensajes.Text = "La copia de seguridad se ha realizado correctamente."
                tsp_lb_Mensajes.Visible = True

            End If

        Catch exError As Exception

            MsgBox("Error: " & exError.Message)

        End Try

    End Sub

    Private Sub tsm_RestaurarCopiaSeguridad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_RestaurarCopiaSeguridad.Click

        Dim Linea As String = ""
        Dim FicheroCopia As StreamReader
        Dim MiBD As New BaseDatos
        Dim CopiaBD As New CopiaSeguridad
        Dim Tabla As String = ""

        ofd_RestaurarCopiaSeguridad.ShowDialog()

        Try

            FicheroCopia = New StreamReader(
            ofd_RestaurarCopiaSeguridad.FileName)

            Do
                Linea = FicheroCopia.ReadLine()

                If Not Linea = Nothing Then

                    If Not Linea.IndexOf(";") > 0 Then
                        Tabla = Linea
                        CopiaBD.BorrarDeBD(Tabla)
                    Else
                        CopiaBD.InsertarEnBD(Tabla, Linea)
                    End If

                End If

            Loop While Not Linea = Nothing

            MsgBox("La restauración de los datos se ha completado correctamente.")
            tsp_lb_Mensajes.Text = "La restauración de los datos se ha completado correctamente."
            tsp_lb_Mensajes.Visible = True

        Catch exError As Exception

            MsgBox("Error: " & exError.Message)

        End Try
    End Sub

    Private Sub tsm_BorrarEquipo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_BorrarEquipo.Click

        Dim Consulta As String
        Dim EquipoBorrar As New Equipo

        Consulta = InputBox("Introduzca el nombre del equipo a borrar...", "Borrar Equipo")

        If Consulta.Length > 0 Then
            EquipoBorrar.BorrarDeBD(Consulta)
        End If

    End Sub

    Private Sub tsm_BorrarJugador_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_BorrarJugador.Click

        Dim JugadorBorrar As New Jugador
        Dim NombreJugador As String
        Dim MiBD As New BaseDatos

        NombreJugador = InputBox("Introduzca el nombre del jugador a borrar...", "Borrar Jugador")

        If NombreJugador.Length > 0 Then
            JugadorBorrar.BorrarDeBD(NombreJugador)
        End If

    End Sub

    Private Sub tsm_BorrarTorneo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsm_BorrarTorneo.Click

        Dim TorneoBorrar As New Campeonato
        Dim NombreTorneo As String
        Dim MiBD As New BaseDatos

        NombreTorneo = InputBox("Introduzca el nombre del torneo a borrar...", "Borrar Torneo")

        If NombreTorneo.Length > 0 Then
            TorneoBorrar.BorrarDeBD(NombreTorneo)
        End If

    End Sub
    
    Private Sub tsm_Salir_Click(sender As Object, e As EventArgs) Handles tsm_Salir.Click
        FormValidar.Close()
    End Sub

    Private Sub tooltp_GestionUsuarios_Popup(sender As Object, e As PopupEventArgs)
        FormConsultas.Show()
    End Sub

    Private Sub FormEntrada_Closing(sender As Object, e As EventArgs) Handles MyBase.FormClosing
        FormValidar.Close()
    End Sub

    'Métodos
    ''' <param name="Tabla">(String) Tabla de la base de datos de la cual vamos ha realizar la copia de seguridad.</param>
    Private Sub CrearCopiaSeguridad(ByVal Tabla As String)

        Dim Linea As String = ""
        Dim FicheroCopia As StreamWriter
        Dim DatosConsulta As OleDbDataReader
        Dim MiBD As New BaseDatos
        Dim CopiaBD As New CopiaSeguridad

        DatosConsulta = CopiaBD.ConsultarBD(Tabla)

        Try
            FicheroCopia = File.AppendText(
                sfd_GuardarCopiaSeguridad.FileName)

            FicheroCopia.WriteLine(Tabla)
            While DatosConsulta.Read

                For i As Integer = 0 To DatosConsulta.FieldCount - 1 Step 1
                    Linea &= (";" & DatosConsulta(i).ToString)
                Next

                FicheroCopia.WriteLine(Linea.Remove(0, 1))
                Linea = ""

            End While

        Catch exError As Exception

            MsgBox("Error en tabla " & Tabla & ": " & exError.Message)
            FicheroCopia.Close()
            File.Delete(sfd_GuardarCopiaSeguridad.FileName)

        Finally
            FicheroCopia.Close()
            MiBD.CerrarConexion()

        End Try
    End Sub
End Class